Học máy (Machine Learning)
Hồi quy tuyến tính
(Linear regression)
Vinh, 08/2021
By Hoàng Hữu Việt
Email: viethh@vinhuni.edu.vn
Viện Kỹ thuật và Công nghệ, Đại học Vinh
Tài liệu tham khảo
Tài liệu chính
[1] Richard O.Duda, Peter E. Hart, David G.Stock. Pattern Classification, 2nd, Wiley,
2001.
[2]. Milos Hauskrecht. Machine Learning, 2010.
https://people.cs.pitt.edu/milos/courses/cs2750-Spring2010/
Nội dung
Hồi quy tuyến tính
Tối ưu hồi quy tuyến tính
Phương pháp giả nghịch đảo
Phương pháp gradient descent
Mở rộng hình tuyến tính
Hồi quy tuyến tính
Học hướng dẫn:
Dữ liệu: 󰇝
󰇛
󰇜󰇞 một tập gồm mẫu
Mẫu vào
một vector kích thước
,󰉽
:
󰇛



󰇜.
Mẫu ra
Mục tiêu: học một hàm sao cho

Hồi quy (regression): liên tục.
Phân lớp (classification): rời rạc.
Hồi quy tuyến tính
Hàm một kết hợp tuyến tính của các thành phần dữ liệu
vào:

trong đó
các tham số (parameter) hay trọng số
(weight).
Hồi quy tuyến tính
Biễu diễn dạng vector:
trong đó:

vector đầu vào.
vector tham số hay vector trọng số.
Hàm lỗi
Dữ liệu: 󰇝
󰇛
󰇜󰇞
Mục tiêu cần tìm một hàm 󰇛
󰇜sao cho

Hàm lỗi (error function): sai số của dự đoán so với đầu ra thực tế.
Lỗi bình phương trung bình (mean-squared error - MSE):

Học (learning): tìm tập trọng số
để tối thiểu hóa
hàm lỗi
.
Hàm lỗi
dụ dữ liệu vào một chiều
x
=(
x
1
)
Hàm lỗi
Dữ liệu vào 2 chiều
x
= (
x
1
,
x
2
)
Tối ưu hồi quy tuyến tính
dụ 1: cho
D
= {(-2,2), (-1,1.5),(0,1),(1,0.5),(2,0)}. Tìm đường thẳng
để tối thiểu hóa khoảng cách từ các điểm đến đường thẳng đó.
hiệu mỗi mẫu
D
i
=(
x
i1
,y
1
)(số chiều
d
=1).
hình hồi quy (dự báo) tuyến tính:
f
(
x
i
)=
w
0
+
w
1
x
i1
.
Hàm lỗi:
J
n
= ?
Tính đạo hàm theo w0 w1?
Cho đạo hàm theo từng biến bằng 0 giải tìm w0 = 1 w1 = -0.5.
Vẽ các điểm đường thẳng?
Tối ưu hồi quy tuyến tính
dụ 2: cho
D
= {(-2,2.2), (-1,1.7),(0,0.8),(1,0.3),(2,0.2)}. Tìm đường
thẳng để tối thiểu hóa khoảng cách từ các điểm đến đường thẳng đó.
hiệu mỗi mẫu
D
i
=(
x
i1
,y
1
)(số chiều
d
=1).
hiệu đường thẳng:
f
(
x
)=
w
0
+
w
1
x
1
.
Hàm lỗi:
J
n
= ?
Tính đạo hàm theo w0 w1?
Cho đạo hàm theo từng biến bằng 0 giải tìm w0 w1?
Vẽ các điểm đường thẳng?
Tối ưu hồi quy tuyến tính
Cần tìm vector tham số để tối thiểu hóa hàm lỗi:
Để tìm vector tham số, đạo hàm của hàm lỗi tương ứng với các tham số
phải bằng 0.
Tối ưu hồi quy tuyến tính
w
J
n
(
w
)=
0
gồm một tập các phương trình:
Tối ưu hồi quy tuyến tính
w
J
n
(
w
)=
0
gồm một tập các phương trình:
Tối ưu hồi quy tuyến tính
w
J
n
(
w
)=
0
gồm một tập các phương trình:
Đây hệ phương trình
d
+1ẩn
w
0
,w
1
,...,w
d
:Aw=b
.
Tối ưu hồi quy tuyến tính
Tập trọng số tối ưu thõa mãn:
dẫn tới một hệ phương trình tuyến tính với
d
+1ẩn:
Nghiệm:
w
=
A
-1
b
, như vậy cần tìm ma trận nghịch đảo!
Tối ưu hồi quy tuyến tính
dụ 3: cho
D
={(1,2),(2,1),(2,3),(3,2),(4,3),(5,2)}.Tìm đường thẳng
để tối thiểu hóa khoảng cách từ các điểm đến đường thẳng đó.
hiệu mỗi mẫu
D
i
=(
x
i1
,y
1
)(số chiều
d
=1).
hiệu đường thẳng:
f
(
x
)=
w
0
x
0
+
w
1
x
1
với
x
0
=1.
Định nghĩa hàm lỗi:
Tính đạo hàm theo
w
0
w
1
:
Tối ưu hồi quy tuyến tính
Tối ưu hồi quy tuyến tính
dụ cho
D
= {(1,2), (2,1),(2,3),(3,2),(4,3),(5,2)}. Phương trình
đường thẳng
f
(
x
)=1.8615+0.1077
x
1
.
Giải bằng giả nghịch đảo
Hàm cần học:
f
(
x
)=
w
0
+
w
1
x
1
+
w
2
x
2
+...+
w
d
x
d
=
w
t
x
=
x
t
w
,
trong đó
x
=(
1,x
1
,...,x
d
)
t
w
=(
w
0
,w
1
,...,w
d
)
t
.
Biểu diễn lại tập mẫu vector trọng số như sau:
Cần tìm vector tham số w để tối thiểu hàm lỗi:
Giải bằng giả nghịch đảo
Cần tìm vector tham số
w
để tối thiểu hàm lỗi:
Lấy đạo hàm theo
w
:
w
J
n
=
2X
t
Xw2X
t
y
Cho
w
J
n
=0ta nghiệm:
w*
=
(X
t
X)
-1
X
t
y.
Giải bằng giả nghịch đảo
Nghiệm:
w*
=
(X
t
X)
-1
X
t
y
, trong đó
X
một ma trận
n
× (
d
+1) với các
dòng tương ứng với các mẫu các cột tương ứng với số chiều.
dụ cho
D
={(1,2),(2,1),(2,3),(3,2),(4,3),(5,2)}.
Nghiệm:
w*
=
(X
t
X)
-1
X
t
y
=[1.8615 0.1077]
t
Phương pháp gradient descent
Mục đích: tìm vector trọng số để tối ưu hình hồi quy tuyến tính:
Ý tưởng: Điều chỉnh vector tham số theo hướng giảm của lỗi
Error(w):
trong đó
tốc độ/tỷ lệ học (learning rate).
Nếu
=0?
Nếu
nhỏ hoặc
lớn?
Phương pháp gradient descent
Điều chỉnh vector tham số theo hướng giảm của lỗi
Error(w):
Lặp để tính các giá trị
w
.
Phương pháp gradient descent
hình tuyến tính:
,
trong đó, 󰇛
󰇜
󰇛
󰇜
.
Định nghĩa làm lỗi:
Tại mỗi bước lặp
k
:
tức :
với đó tốc độ học (learning rate)
(k)
một hằng số hoặc
(k)= 1/k.
Phương pháp online gradient
hình tuyến tính:
,
trong đó, 󰇛
󰇜
󰇛
󰇜
.
Tại mỗi bước lặp:
Thuật toán LMS (Least Mean Square):
Phương pháp gradient descent
dụ 4: Chạy thuật toán LMS cho bộ dữ liệu:
󰇟󰇠 󰇟󰇠,
Chuẩn hóa các mẫu dữ liệu:
 
Khởi tạo:
,
= 0.1,   .
k = 1 (epoch 1):
 
 



 

  







, 


, 


Khi kết thúc vòng lặp k = 1, lỗi bao nhiêu?
k = 2 (epoch 2):


k =3 (epoch 3): ta


Phương pháp online gradient
dụ
Phương pháp online gradient
Lập trình bằng Python:
Ci đặt Python, v dụ: C:\Python38
Ci đặt thư vin
Chuyn thư mục hin thi vo thư mục \Python38\scripts
1. pip install numpy
2. pip install matplotlib
3. pip install keras
4. pip install tensorflow-cpu
pip install tensorflow <hỗ trơ NVIDA>
5. pip install intel-tensorflow
6. pip install pillow
7. pip install opencv-python
Ci đặt PyCharm
Mở rộng hình tuyến tính
Hàm để học:
Hàm lỗi:
Giả sử:
Dẫn tới một hệ
m
phương trình tuyến tính:
Hồi quy với đa thức
Tập mẫu gồm các bộ (
x
,
y
).
Các hàm sở:
Hàm để học:
Học với các hàm sở
Hàm để học:
Cập nhật trực tiếp (online gradient) cho (
x,y):
dụ hồi quy với đa thức
Dữ liệu: tập mẫu gồm các bộ (
x,y
).
Các hàm sở:
i
(x)
=
x
i
,
i
=1,2,...,
m
.
Hàm để học:
với
w
=(
w
0
,
w
1
,
w
2
,...,
w
m
)
t
(x)
=(1,
x
,
x
2
,...,
x
m
)
t
.
Cập nhật trực tiếp (online gradient) cho bộ (
x,y
):
Ví dụ hồi quy với đa thức
dụ 5: Cho tập mẫu 󰇟󰇠 󰇟󰇠 Dự báo với
hình hồi quy đa thức bậc 2:
.
Chuẩn hóa các mẫu dữ liệu:

Áp dụng thuật toán LMS để tìm tập trọng số w.
Khởi tạo:
,
= 0.1,   .
k = 1:
 
 



Ví dụ hồi quy với đa thức
k = 1:
 

 


 


 
 

k = 2 (epoch 2)
 
 
Bài tập
1. Cho tập mẫu D = {(-2,7),(-1,5),(0,1),(1,1),(2,11)}.
Tìm đa thức bậc 3 để dự đoán cho bộ dữ liệu trên.
2. Cho tập mẫu D = {(0,0), (1,4), (2,5), (3,3), (4,2),
(5,2), (6,5)}. Tìm đa thức bậc 6 để tối thiểu lỗi
trung bình bình phương.
3. Cho tập mẫu D = {(-3, 2.8), (-2, 0.9), (-1, -0.9), (0,
-1.0), (1, 0.8), (2, 2.7), (3, 3.1), (4, 1.6), (5,-0.5)}.
Với hình dự báo f(x) = w
0
+ w
1
sin(x) +
w
2
cos(x), sử dụng thuật toán LMS tìm các hệ số
của hình.
Tập dữ liệu 1
Tập dữ liệu 3
Bài tập
Số ca nhiễm Covid-19 Thy đin nh đến ngy 26/4 đưc cho như
liên kết sau: https://vnexpress.net/thuy-dien-hy-vong-som-dat-mien-
dich-cong-dong-4090626.html
Bằng ch di chuyển chuột trên đưng dữ liu số người nhiễm Covid
(mu xanh), lấy ra số liu nhiễm các ngy được vẽ trên đồ thị từ 31/01
tạo ra một bảng Excel số liệu.
Sử dụng hình dự báo đa thức phù hợp lập trình thuật toán LMS
để dự báo số người nhiễm Covid trong ngày 29/04 ngy 02/05.